﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PetShopService{
    public class ItensDesejadosServico{

        BancoEntities banco = new BancoEntities();
        UsuarioServicos usuarioServicos = new UsuarioServicos();

        public void SavesItensDesejados(int idProduto){
            
            int idUsuario = usuarioServicos.usuarioLogado.idUusario;
            ItensDesejados oItemDesejado = banco.ItensDesejados.SingleOrDefault(i => i.idUsuario == idUsuario && i.idProduto == idProduto);

            if (oItemDesejado != null && (bool)oItemDesejado.foiComprado) {
                oItemDesejado.dtAdicionado = DateTime.Now;
                oItemDesejado.foiComprado = false;
                banco.SaveChanges();
                return;
            }
            
            oItemDesejado = new ItensDesejados();
            oItemDesejado.idProduto = idProduto;
            oItemDesejado.idUsuario = idUsuario;
            oItemDesejado.dtAdicionado = DateTime.Now;
            oItemDesejado.foiComprado = false;
            
            banco.ItensDesejados.Add(oItemDesejado);
            banco.SaveChanges();
        }

        public void DeletaItemDesejado(int idItemDesejado) {
            
            int idUsuario = usuarioServicos.usuarioLogado.idUusario;
            ItensDesejados oItem = banco.ItensDesejados.SingleOrDefault(i => i.idItemDesejado == idItemDesejado && i.idUsuario == idUsuario);
            if (oItem != null)
                oItem.foiComprado = true;

            banco.SaveChanges();
        }

        public List<ItensDesejados> RetornaItensDesejadosDoUsuario() {
            int idUsuario = usuarioServicos.usuarioLogado.idUusario;
            return banco.ItensDesejados.Include("Produto").Where(i => i.idUsuario == idUsuario && i.foiComprado == false).ToList();
        }

        public ItensDesejados RetornaItemMaisDesejado() {
            int idUsuario = usuarioServicos.usuarioLogado.idUusario;
            return banco.ItensDesejados.Include("Produto").GroupBy(p => p.idProduto).Max().FirstOrDefault();
        }

        public void DefineItemDesejadoComoComprado(int idItemDesejado) {
            using(PetShopService.BancoEntities context = new BancoEntities()) {
                ItensDesejados itemDesejado = context.ItensDesejados.SingleOrDefault(i => i.idItemDesejado == idItemDesejado);
                
                if (itemDesejado == null)
                    return;

                itemDesejado.foiComprado = true;
                context.SaveChanges();
            }
        }
    }
}
